-----------------------------------------------
CD zur Diplomarbeit

"Algorithmen zur Mustersuche in Zeichenfolgen"

Daniel Gaumann
Betreuer: Prof. Dr. Egon Wanke
Heinrich-Heine-Universitt Dsseldorf
Mathematisch-Naturwissenschaftliche Fakultt
9.Mai 2008


Hinweise zu den Programmen auf der CD
-----------------------------------------------


Executables
===========

Das Animationsprogramm ist in der Anfangsphase dieser Arbeit entstanden 
und dient der reinen Anschauung einiger Algorithmen zur einfachen Mustersuche. 
Es knnen damit mehrere Verfahren parallel durchgefhrt werden, um so die 
Unterschiede der jeweiligen Strategien zu verdeutlichen. 
Es stehen Beispieltexte und -muster zur Verfgung, die die Unterschiede 
zwischen dem naiven Verfahren und Knuth-Morris-Pratt, zwischen next- 
und f-Array oder zwischen der starken und schwachen Good-Suffix-Regel 
anschaulich machen. Ein tieferen Zweck erfllt es nicht, aber es ist 
eine nette Spielerei und auf der CD ist genug Platz dafr.

Das zweite und fr diese Arbeit weitaus wichtigere Programm ist Zeitmessungen. 
Mit diesem Programm wurden die Algorithmen getestet, die Laufzeiten 
gemessen und die Ergebnisse grafisch aufbereitet.

Die Bedienung beider Programme sollte halbwegs intuitiv sein, allerdings 
knnen einige Probleme auftreten, da ich nicht besonders viel Zeit auf 
das Abfangen von Fehleingaben verwendet habe. 

Daher folgende Hinweise zu bekannten Problemen:
-----------------------------------------------

* Beim Animationsprogramm kann es in seltenen Fllen vorkommen, dass 
  nach dem Auftreten eines Fehlers das Programm unbedienbar wird. 
  In diesem Fall muss die Anwendung neu gestartet werden.

* Das Programm Zeitmessungen ist fr eine Auflsung von mindestens 
  1280x1024 Pixeln konzipiert. Auf niedrigeren Auflsungen wird die 
  Bedienung etwas unbequemer. Das Programm besteht aus zwei Fenstern - 
  dem bersichtsfenster und dem Detailfenster, was beim Start hinter 
  dem anderen liegt. Es kann unter anderem ber das Kontextmen 
  (rechte Maustaste) des "`Kartenbildes"' in den Vordergrund geholt 
  werden.

* Die Option "Real-Time-Priority" ist mit Vorsicht zu genieen. Dadurch 
  erhalten die Algorithmen hchste Prioritt (damit zwischendurch 
  keine anderen Prozesse Rechenzeit zugeteilt bekommen, wodurch die 
  Messungen verflscht werden), was bei lngeren Laufzeiten zu 
  Komplikationen bis hin zur Unbedienbarkeit des Systems fhren kann. 
  Unter Vista konnte ich dieses Problem nicht beobachten, aber im 
  Zweifel sollte die Option ausgeschaltet bleiben.

* Die Option "Statistik automatisch speichern" fhrt zu einem Fehler, 
  wenn das Unterverzeichnis \Daten\ nicht existiert oder schreibgeschtzt 
  ist.

* Die Option "Treffer auflisten und checken" dient der Fehlerkontrolle.
  Ist sie aktiviert, werden die Fundstellen in einer Liste gespeichert, 
  miteinander verglichen und Unstimmigkeiten in dem Textfeld darunter 
  ausgegeben. Dabei kann es bei der mehrfachen Mustersuche zu zwei 
  Problemen kommen:

    - Bei groen Mustermengen, langen Texten und sehr kleinen Alphabeten 
      (d.h. am Anfang eines Durchlaufs) ist die Menge der Fundstellen 
      derart gro, dass der Arbeitsspeicher vollluft und das Programm 
      irgendwann abstrzt. Systembedingt passiert das sptestens bei  
      einem Speicherbedarf von 2GiB, auf meinem Laptop war bei ca. 1.6GiB 
      Ende.

    - Bei der Suche nach 2 Mustern kommt es in ca. 50% der Flle vor,
      dass die Suche bei lngeren Texten am Anfang scheinbar in eine 
      Endlosschleife luft. Dieser Effekt erklrt sich dadurch, dass die 
      Trefferlisten fr einen schnellen Vergleich sortiert werden mssen 
      (der naive Algorithmus findet die Muster in einer anderen 
      Reihenfolge als die anderen) und die Vorsortierung der "naiven Liste"
      bei zwei gleichen Mustern fr die intern verwendete Quicksort-Variante 
      den Worst-Case bedeutet. In dem Fall hilft langes Warten, oder ein 
      Abschieen des Programms durch den Taskmanager.

* Beim Laden von vorher gespeicherten Daten wird (fast) keine berprfung 
  auf Sinnhaftigkeit der Daten durchgefhrt. Werden ber die Dialoge 
  ungltige Dateien ausgewhlt, kann es zu unerwnschten Effekten kommen,
  zum Beispiel zu einem Volllaufen des Arbeitsspeichers mit abschlieendem
  Absturz der Anwendung. Die Standard-Dateiendung fr Kartendaten ist ".dpl", 
  die Daten fr detailliertere Messungen sind in ".det"-Dateien gespeichert.

	

Quellcode
=========

Die Programme wurden mit "Borland Delphi 7 Personal" entwickelt. Eine 
Portierung auf Lazarus, einer freien Entwicklungsumgebung, die in weiten Teilen 
kompatibel zu Delphi ist und plattformbergreifendes Programmieren ermglicht, 
ist mit einigen kleinen nderungen mglich. Allerdings zeigten erste Experimente, 
dass dabei alle Algorithmen mindestens doppelt so lange brauchen, und einige 
Algorithmen komplett unbrauchbar wurden (100-500fache Laufzeit), was irgendwie 
mit einem anderen Parameter- oder Speicher-Management zusammenhngt. 

Fr ein Kompilieren der Projekte mit den aktuellen kostenfreien Delphi-Versionen 
(Turbo Delphi Explorer) sind kleinere Umbauten an dem GUI ntig, da dort eine 
der verwendeten visuellen Komponenten ("TSpinEdit", zur Eingabe von ganzzahligen 
Werten) nicht mehr verfgbar ist. 

Bei den Zeitmessungen kann zustzlich zu den hier vorgestellten Algorithmen 
die von Delphi zur Verfgung gestellte Funktion "Pos" getestet werden. Um es 
diplomatisch zu formulieren: Diese Funktion wurde wahrscheinlich fr andere 
Flle optimiert.



Download
========

Der Inhalt der CD ist auch ber meine Webseite www.gausi.de zu bekommen.
